<?php
/**
 * Description of conversiones_monetarias_model
 *
 * @author daniel
 */
class Conversiones_monetarias_model extends Model {

	private $valor_dolar;
	private $valor_uf;

	public function __construct() {
		parent::__construct();
                $this->load->database();
		//$this->load->library("curl");

		$this->valor_dolar = false;
		$this->valor_uf = false;
	}

	public function valor_dolar() {
		if (!$this->valor_dolar) {
			$this->valor_dolar = $this->selectUF();//$this->obtener_valor_dolar();
		}

		return $this->valor_dolar;
	}

	public function valor_uf() {
		if (!$this->valor_uf) {
			$this->valor_uf = $this->selectDolar();//$this->obtener_valor_uf();
		}
		return $this->valor_uf;
	}

        public function selectUF(){
            
            $arreglo = array('id' => 2);
            $query = $this->db->get_where("conversiones_monetarias", $arreglo);
            if( $query->num_rows() > 0 ) {
                foreach ($query->result() as $row){
                    return $row->valor_en_pesos;
                }
            }
        }
        
        public function selectDolar(){
            $arreglo = array('id' => 3);
            $query = $this->db->get_where("conversiones_monetarias", $arreglo);
            if( $query->num_rows() > 0 ) {
                foreach ($query->result() as $row){
                    return $row->valor_en_pesos;
                }
            }
                    
        }
        
        
	public function convertir_dolares_a_pesos($cantidad_dolares) {
		return (int) round($cantidad_dolares * $this->valor_dolar);
	}

	public function convertir_ufs_a_pesos($cantidad_uf) {
		return (int) round($cantidad_uf * $this->valor_uf);
	}

    public function convertir_pesos_a_dolares($cantidad_pesos) {
		return (int) round($cantidad_pesos / $this->valor_dolar);
	}

    public function convertir_pesos_a_ufs($cantidad_pesos) {
		return $cantidad_pesos / $this->valor_uf;
	}

	/**
	 * retorna un string con la fecha de hoy
	 * en el formayo YYYYMMDD
	 */
	private function _fecha_actual($days = 0) {
		if (0 === $days || !is_numeric($days)) {
			return strftime("%Y%m%d");
		} else {
			$now = time();
			$more = $days * 24 * 60 * 60;

			$now += $more;

			return strftime("%Y%m%d", $now);
		}
	}

	/**
	 * retorna el ultimo valor conocido para el Dolar.
	 */
	private function obtener_valor_dolar($fecha_actual = FALSE, $days = 0) {
		if ($fecha_actual === FALSE) {
			$fecha_actual = $this->_fecha_actual();
		}

		$this->load->library("dbvars");

		/*
		 * si la variable global, esta seteada retorno ese valor.
		 */
		$dolar_global_key = "dolar_" . $fecha_actual;

		if ($this->dbvars->contains($dolar_global_key)) {
			return $this->dbvars->get($dolar_global_key);
		}

		/*
		 * la variable global no esta seteada.
		 */
		
        //        $url_dolar = 10;
		$valor_dolar = 519;//$this->curl->simple_get($url_dolar . "?fecha=" . $fecha_actual);

		if (!is_float($valor_dolar) && !is_numeric($valor_dolar)) {
			return $this->obtener_valor_dolar($this->_fecha_actual(--$days), $days);
		}

		$this->dbvars->set($dolar_global_key, $valor_dolar);

		return $valor_dolar;
	}

	/**
	 * retorna el ultimo valor conocido para la UF.
	 *
	 */
	private function obtener_valor_uf($fecha_actual = FALSE, $days = 0) {
		if ($fecha_actual === FALSE) {
			$fecha_actual = $this->_fecha_actual();
		}

		$this->load->library("dbvars");

		/*
		 * si la variable global, esta seteada retorno ese valor.
		 */
		$uf_global_key = "uf_" . $fecha_actual;
		if ($this->dbvars->contains($uf_global_key)) {
			return $this->dbvars->get($uf_global_key);
		}

		/*
		 * la variable global no esta seteada.
		 */
		
                $url_uf = 10;
		$valor_uf = 22;//$this->curl->simple_get($url_uf . "?fecha=" . $fecha_actual);

		if (!is_float($valor_uf) && !is_numeric($valor_uf)) {
			return $this->obtener_valor_uf($this->_fecha_actual(--$days), $days);
		}

		$this->dbvars->set($uf_global_key, $valor_uf);

		return $valor_uf;
	}
        
        public function editar_monedas( $data_post ){
            //echo $data_post['monedaUF'];
            //echo $data_post['monedaDOLAR'];
            $dataArr = array('valor_en_pesos' => $data_post['monedaUF']);
            $this->db->where('id', 3);
            $this->db->update('conversiones_monetarias', $dataArr);            
            
            $dataArr = array('valor_en_pesos' => $data_post['monedaDOLAR']);
            $this->db->where('id', 2);
            $this->db->update('conversiones_monetarias', $dataArr);            
        }

}
